home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / System / CAnimCursor & Friends / CAcurDesktop.c next >
Text File  |  1992-08-24  |  2KB  |  87 lines

  1. /*
  2.  * CAcurDesktop.c
  3.  * A useful supplement to CAnimCursor, when using the TCL.
  4.  * Version 1.0b3, 13 May 1992
  5.  *
  6.  * To use, change your application's MakeDesktop() method to:
  7.  *
  8.  *        void CYourApp::MakeDesktop(void)
  9.  *        {
  10.  *            gDesktop = new(CAcurDesktop);
  11.  *            ((CAcurDesktop*)gDesktop)->IAcurDesktop(this);
  12.  *        }
  13.  *
  14.  * If you want CAcurDesktop's superclass to be something other than
  15.  * CDesktop (for example, CFWDesktop), well, here's where you
  16.  * gnash your teeth and wish for multiple inheritance.  If Think C
  17.  * had MI, the class hierarchy might look like:
  18.  *
  19.  *     CDesktop              \
  20.  *         MFWDesktop        \
  21.  *            MAcurDesktop     >->    CMyDesktop
  22.  *            MWizzyDesktop    /
  23.  *
  24.  * As it is, the hierarchy might have to be:
  25.  *
  26.  *        CDesktop -> CFWDesktop -> CHackedUpWizzyDesktop -> CHackedUpAcurDesktop -> CMyDesktop
  27.  *
  28.  * The easiest way, if you can believe it, is to take your current
  29.  * CMyDesktop.c and CMyDesktop.h files and change all occurences
  30.  * of their superclass to "CAcurDesktop";  then, change every
  31.  * reference to CDesktop in CAcurDesktop.h and CAcurDesktop.c to
  32.  * whatever CMyDesktop's superclass used to be.  Don't forget
  33.  * the IDesktop() call--change that too.  It's a pain in the butt,
  34.  * I know.  Sorry.  Don't blame me.
  35.  *
  36.  */
  37.  
  38.  
  39.  
  40. /********************************/
  41.  
  42. #include "CAcurDesktop.h"
  43.  
  44. /********************************/
  45.  
  46. #include "CAnimCursor.h"
  47.  
  48. extern Boolean CrsrVis : 0x8CC;    // TRUE if cursor is visible
  49.  
  50. /********************************/
  51.  
  52.  
  53.  
  54. void CAcurDesktop::IAcurDesktop(CBureaucrat *aSupervisor)
  55. {
  56.     inherited::IDesktop(aSupervisor);
  57. }
  58.  
  59.  
  60.  
  61. void CAcurDesktop::DispatchCursor(Point where, RgnHandle mouseRgn)
  62. {
  63.     switch (gAnimCursor->getMode()) {
  64.         
  65.         case kCACModeInterrupted:
  66.             inherited::DispatchCursor(where, mouseRgn);
  67.             break;
  68.             
  69.         case kCACModeContinuous:
  70.             if (gAnimCursor == NULL || gAnimCursor->getIsAnimating()) {
  71.                 if (gInBackground || !CrsrVis) {
  72.                     return;
  73.                 }
  74.                 CView::cCurrHelpView = NULL;
  75.                 gAnimCursor->animateCursor();
  76.             } else {
  77.                 inherited::DispatchCursor(where, mouseRgn);
  78.             }
  79.             break;
  80.             
  81.         default:
  82.                 /* What's goin' on? */
  83.             break;
  84.             
  85.     }
  86. }
  87.